package com.fpf.lab01_basics;

import java.util.concurrent.*;

public class Demo3_CallableFuture {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        // 创建一个大小为1的线程池
        ExecutorService pool = Executors.newFixedThreadPool(1);
        /*
        向线程池提交一个任务：返回整数42
        Future<Integer>对象代表异步计算的结果
        future对象可以用来获取任务执行的结果，检查任务是否完成等
         */
        Future<Integer> f = pool.submit(() -> 42);
        // f.get方法会阻塞该线程，直到返回结果后
        System.out.println("result: " + f.get());
        /*
        关闭线程池
        调用此方法后线程池将不再接受新任务，但会继续执行已经提交的任务，直到完成
         */
        pool.shutdown();
    }
}
